package fr.mairie.parc.page.commande;

import javax.annotation.Resource;

import org.apache.click.control.Form;
import org.apache.click.control.ImageSubmit;
import org.apache.click.util.Bindable;
import org.springframework.context.ApplicationContext;

import fr.mairie.parc.context.AppContext;
import fr.mairie.parc.control.commande.CommandeFields;
import fr.mairie.parc.domain.Commande;
import fr.mairie.parc.domain.Materiel;
import fr.mairie.parc.page.BorderPage;
import fr.mairie.parc.service.CommandeManager;
import fr.mairie.parc.service.MaterielManager;

public class CommandePage extends BorderPage {

	private static final long serialVersionUID = 1L;

	@Resource private CommandeManager commandeManager;
	@Resource protected MaterielManager materielManager;
	@Bindable protected Form form = new Form();

	protected CommandeFields fields = new CommandeFields(false);

	public CommandePage() {
		fields.addAll(form);
		form.add(new ImageSubmit("OK", "/assets/images/32x32/accept.png", this,"onSubmit"));
		form.add(new ImageSubmit("Cancel", "/assets/images/32x32/cancel.png",this, "onCancelClick"));

	}

	@Override
	public void onInit() {
		super.onInit();
		ApplicationContext ctx = AppContext.getApplicationContext();
		commandeManager = (CommandeManager) ctx.getBean("commandeManager");
		materielManager = (MaterielManager) ctx.getBean("materielManager");
	}

	public boolean onSubmit() {
		String msg;
		if (form.isValid()) {
			Commande commande = new Commande();
			form.copyTo(commande);
			commandeManager.addCommande(commande);

			Materiel materiel = new Materiel();
			materiel.setType(commande.getMateriel());
			materiel.setMarque(commande.getMarque());
			materiel.setModele(commande.getModele());
			materiel.setPrix(commande.getPrix());
			materiel.setStock(commande.getStock());
			for (int i = 0; i < commande.getQuantite(); i++) {
				materielManager.addMateriel(materiel);
			}
			form.clearValues();

			msg = "La commande a été crée avec succés.";
			addModel("msg", msg);

		} else {
			msg = getMessage("msg-form-error", form.getError());
		}

		return true;
	}
}
